home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac: Not for Sale / Another.not.for.sale (Australia).iso / fade into you / getting there / Apps / MOO-1.7.6.src / MacTCP_2.0.2 / TCPPB.h < prev    next >
Text File  |  1994-11-02  |  5KB  |  259 lines

  1. /* 
  2.     TCPPB.h    
  3.     C definitions of parameter block entries needed for TCP calls
  4.  
  5.     Copyright Apple Computer, Inc. 1988-91
  6.     All rights reserved
  7.     
  8. */
  9. #ifndef __TCPPB__
  10. #define __TCPPB__
  11.  
  12. #ifndef __MACTCPCOMMONTYPES__
  13. #include <MacTCPCommonTypes.h>
  14. #endif
  15.  
  16.  
  17. /* Command codes */
  18.  
  19. #define TCPCreate            30
  20. #define    TCPPassiveOpen        31
  21. #define TCPActiveOpen        32
  22. #define TCPSend                34
  23. #define TCPNoCopyRcv        35
  24. #define TCPRcvBfrReturn        36
  25. #define TCPRcv                37
  26. #define TCPClose            38
  27. #define TCPAbort            39
  28. #define TCPStatus            40
  29. #define TCPExtendedStat        41
  30. #define TCPRelease            42
  31. #define TCPGlobalInfo        43
  32. #define TCPCtlMax            49
  33.  
  34. typedef enum TCPEventCode {
  35.     TCPClosing = 1,
  36.     TCPULPTimeout,
  37.     TCPTerminate,
  38.     TCPDataArrival,
  39.     TCPUrgent,
  40.     TCPICMPReceived,
  41.     lastEvent = 32767
  42. } TCPEventCode;
  43.  
  44. typedef enum TCPTerminationReason {
  45.     TCPRemoteAbort = 2,
  46.     TCPNetworkFailure,
  47.     TCPSecPrecMismatch,
  48.     TCPULPTimeoutTerminate,
  49.     TCPULPAbort,
  50.     TCPULPClose,
  51.     TCPServiceError,
  52.     lastReason = 32767
  53. } TCPTerminationReason; 
  54.  
  55. #ifdef THINK_C
  56.  
  57.     typedef ProcPtr TCPNotifyProc;
  58.     
  59. #else
  60.  
  61.     typedef pascal void (*TCPNotifyProc) (
  62.             StreamPtr tcpStream,
  63.             unsigned short eventCode,
  64.             Ptr userDataPtr,
  65.             unsigned short terminReason,
  66.             struct ICMPReport *icmpMsg);
  67.         
  68. #endif
  69.  
  70. typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);
  71.  
  72. typedef unsigned short tcp_port;
  73.  
  74. typedef unsigned char byte;
  75.  
  76. enum {                    /* ValidityFlags */
  77.     timeoutValue = 0x80,
  78.     timeoutAction = 0x40,
  79.     typeOfService = 0x20,
  80.     precedence = 0x10
  81. };
  82.  
  83. enum {                    /* TOSFlags */
  84.     lowDelay = 0x01,
  85.     throughPut = 0x02,
  86.     reliability = 0x04
  87. };
  88.  
  89. typedef struct TCPCreatePB {
  90.     Ptr         rcvBuff;
  91.     unsigned long rcvBuffLen;
  92.     TCPNotifyProc     notifyProc;
  93.     Ptr         userDataPtr;
  94. }TCPCreatePB;
  95.  
  96. typedef struct TCPOpenPB {
  97.     byte ulpTimeoutValue;
  98.     byte ulpTimeoutAction;
  99.     byte validityFlags;
  100.     byte commandTimeoutValue;
  101.     ip_addr remoteHost;
  102.     tcp_port remotePort;
  103.     ip_addr localHost;
  104.     tcp_port localPort;
  105.     byte tosFlags;
  106.     byte precedence;
  107.     Boolean dontFrag;
  108.     byte timeToLive;
  109.     byte security;
  110.     byte optionCnt;
  111.     byte options[40];
  112.     Ptr userDataPtr;
  113. }TCPOpenPB;
  114.     
  115. typedef struct TCPSendPB {
  116.     byte ulpTimeoutValue;
  117.     byte ulpTimeoutAction;
  118.     byte validityFlags;
  119.     Boolean pushFlag;
  120.     Boolean urgentFlag;
  121.     Ptr wdsPtr;
  122.     unsigned long sendFree;
  123.     unsigned short sendLength;
  124.     Ptr userDataPtr;
  125. }TCPSendPB;
  126.     
  127.  
  128. typedef struct TCPReceivePB {        /* for receive and return rcv buff calls */
  129.     byte commandTimeoutValue;
  130.     byte filler;
  131.     Boolean markFlag;
  132.     Boolean urgentFlag;
  133.     Ptr rcvBuff;
  134.     unsigned short rcvBuffLen;
  135.     Ptr rdsPtr;
  136.     unsigned short rdsLength;
  137.     unsigned short secondTimeStamp;
  138.     Ptr userDataPtr;
  139. }TCPReceivePB;
  140.     
  141. typedef struct TCPClosePB {
  142.     byte ulpTimeoutValue;
  143.     byte ulpTimeoutAction;
  144.     byte validityFlags;
  145.     Ptr userDataPtr;
  146. }TCPClosePB;
  147.     
  148. typedef struct HistoBucket {
  149.     unsigned short value;
  150.     unsigned long counter;
  151. };
  152.     
  153. #define NumOfHistoBuckets    7
  154.  
  155. typedef struct TCPConnectionStats {
  156.     unsigned long dataPktsRcvd;
  157.     unsigned long dataPktsSent;
  158.     unsigned long dataPktsResent;
  159.     unsigned long bytesRcvd;
  160.     unsigned long bytesRcvdDup;
  161.     unsigned long bytesRcvdPastWindow;
  162.     unsigned long  bytesSent;
  163.     unsigned long bytesResent;
  164.     unsigned short numHistoBuckets;
  165.     struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
  166.     unsigned short lastRTT;
  167.     unsigned short tmrSRTT;
  168.     unsigned short rttVariance;
  169.     unsigned short tmrRTO;
  170.     byte sendTries;
  171.     byte sourchQuenchRcvd;
  172. }TCPConnectionStats;
  173.     
  174. typedef struct TCPStatusPB {
  175.     byte ulpTimeoutValue;
  176.     byte ulpTimeoutAction;
  177.     long unused;
  178.     ip_addr remoteHost;
  179.     tcp_port remotePort;
  180.     ip_addr localHost;
  181.     tcp_port localPort;
  182.     byte tosFlags;
  183.     byte precedence;
  184.     byte connectionState;
  185.     unsigned short sendWindow;
  186.     unsigned short rcvWindow;
  187.     unsigned short amtUnackedData;
  188.     unsigned short amtUnreadData;
  189.     Ptr securityLevelPtr;
  190.     unsigned long sendUnacked;
  191.     unsigned long sendNext;
  192.     unsigned long congestionWindow;
  193.     unsigned long rcvNext;
  194.     unsigned long srtt;
  195.     unsigned long lastRTT;
  196.     unsigned long sendMaxSegSize;
  197.     struct TCPConnectionStats *connStatPtr;
  198.     Ptr userDataPtr;
  199. }TCPStatusPB;
  200.     
  201. typedef struct TCPAbortPB {
  202.     Ptr userDataPtr;
  203. }TCPAbortPB;
  204.     
  205. typedef struct TCPParam {
  206.     unsigned long tcpRtoA;
  207.     unsigned long tcpRtoMin;
  208.     unsigned long tcpRtoMax;
  209.     unsigned long tcpMaxSegSize;
  210.     unsigned long tcpMaxConn;
  211.     unsigned long tcpMaxWindow;
  212. }TCPParam;
  213.  
  214. typedef struct TCPStats {
  215.     unsigned long tcpConnAttempts;
  216.     unsigned long tcpConnOpened;
  217.     unsigned long tcpConnAccepted;
  218.     unsigned long tcpConnClosed;
  219.     unsigned long tcpConnAborted;
  220.     unsigned long tcpOctetsIn;
  221.     unsigned long tcpOctetsOut;
  222.     unsigned long tcpOctetsInDup;
  223.     unsigned long tcpOctetsRetrans;
  224.     unsigned long tcpInputPkts;
  225.     unsigned long tcpOutputPkts;
  226.     unsigned long tcpDupPkts;
  227.     unsigned long tcpRetransPkts;
  228. }TCPStats;
  229.     
  230. typedef struct TCPGlobalInfoPB {
  231.     struct TCPParam *tcpParamPtr;
  232.     struct TCPStats *tcpStatsPtr;
  233.     StreamPtr *tcpCDBTable[1];
  234.     Ptr userDataPtr;
  235.     unsigned short maxTCPConnections;
  236. }TCPGlobalInfoPB;
  237.     
  238. typedef struct TCPiopb {
  239.     char                 fill12[12];
  240.     TCPIOCompletionProc    ioCompletion;
  241.     short                 ioResult;
  242.     char                 *ioNamePtr;        
  243.     short                 ioVRefNum;        
  244.     short                ioCRefNum;            
  245.     short                 csCode;
  246.     StreamPtr             tcpStream;                
  247.     union {
  248.         struct TCPCreatePB create;
  249.         struct TCPOpenPB open;
  250.         struct TCPSendPB send;
  251.         struct TCPReceivePB receive;
  252.         struct TCPClosePB close;
  253.         struct TCPAbortPB abort;
  254.         struct TCPStatusPB status;
  255.         struct TCPGlobalInfoPB globalInfo;
  256.         } csParam;
  257. }TCPiopb;
  258.     
  259. #endif